Peer Sprite Viewer v1.35
Coded by: Evil Peer (evilpeer@hotmail.com)

This program requires the Microsoft .NET Framework, which you can download from Windows Update and elsewhere on Microsoft's site.

Its a really simple sprite viewing program.  It should be able to view uncompressed sprites in nearly any ROM.  It can also view uncompressed level or map data in many cases.

Re/Decompression is only supported for Chrono Trigger and Final Fantasy VI.

Here's an example usage:

- Open the ROM file
- Set the Start and End raw file offsets
- Set the Bitplanes
- Set the width and height of the image
- Click "Copy to Buffer"
- Click "Get Palettes"
- Choose a file to get 15 bit color palette information from
- Set starting and beginning points of color information (default: ZSNES save state palettes)
- Click OK
- Set palette index and Change Palette (or cycle through palettes in image window)

The main window should show the raw hex information, and the image window will update.

Notes:
- Start and End Offsets and Palette Index are hex numbers.
- If you want to change some of the settings, but not the data, click "Refresh".  Most actions will not require a manual refresh.
- If you want to view level information, set the Bitplanes to "R3G3B2" for single byte tile data and "R5G6B5" for double byte tile data.
- To navigate a ROM using scrolling commands, make sure the Image window is active.
- Some of the features (pointer tables, palettes, etc) are geared towards SNES ROMs and will only work well with them.
- The compression dialog does not perform any sort of space calculations, so there is every possibility that you will overwrite the next compressed packet (IOW, you'll mess stuff up).



Image Navigation Keys
Up		moves up one row
Down		moves down one row
Left		moves left one chunk (8x8 pixels)
Right 	moves right one chunk
PgUp		moves up one full screen
PgDown	moves down one full screen
Ctrl+Left	moves left one byte
Ctrl+Right	moves right one byte
Ctrl+PgUp	moves up 0x8000 bytes (one full bank in a SNES LoRom)
Ctrl+PgDown	moves down 0x8000 bytes
[		decreases image width by 8 pixels
]		increases image width by 8 pixels
Ctrl+[	decreases image width by 1 pixel (only for RGB color)
Ctrl+]	increases image width by 1 pixel (only for RGB color)
Z		zoom in
Ctrl+Z	zoom out
,		previous palette
.		next palette
Ctrl+,	shift palette down by 1 color
Ctrl+.	shift palette up by 1 color
Shift+Key	performs command without updating data


Bitplane information

1 (2 color, linear)
NES
linear data

2 (4 color)
SNES, GB, GBC
interleaved data

2 (4 color, b ordered)
NES
bitplane ordered data

2 (4 color, linear)
NGPC, VB
linear data

3 (8 color)
SNES
interleaved data

4 (16 color)
SNES, PCE
interleaved data

4 (16 color, r ordered)
GG, SMS, WC
row ordered data

4 (16 color, linear)
Gen
linear data

8 (256 color)
SNES
interleaved data

8 (256 color, linear)
SNES
linear data

R3G3B2 (8 bit RGB color)
Theoretical, Chrono Trigger
streamed data

R5G5B5 (15 bit RGB color)
Common Format
streamed data

R5G6B5 (16 bit RGB color)
Common Format
streamed data

R8G8B8 (24 bit RGB color)
N64, Common Format
streamed data

A8R8G8B8 (32 bit RGBA color)
Peer Sprite Viewer, Common Format
streamed data


Version History
v1.35
New
- Added recompression for Final Fantasy VI.  Routine has not been thoroughly tested, so let me know if there are any issues.
- Added an "Apply Mask" option to the pointer table dialog.  For use with mirrored ROM addresses.
- Most settings are now stored in the registry.
Fixed
- Added a Save ROM button, so that recompression will actually make a difference.  ;)
- Fixed a bug in the PSVRender library that caused RGB modes to redraw the image window a few thousand times.
- Clicking cancel on the pointer dialog no longer acts as if ok was clicked.

v1.30
New
- New dialog and more generalized function for pointer tables
- Makes use of PSVRender library
- Detects bad compression packets
- Pointer table traversal in both directions
- Added arbitrary compress / decompress dialog
Fixed
- Fixed green aspect decoding of R5G5B5 and R5G6B5
- Decompressed data now displays the full amount of hex data instead of the difference between the offsets

v1.20
New
- Added several RGB formats
- Added Chrono Trigger decompression
- Added new image navigation commands
- Added external palette loading
- Support for palettes of sizes other than 16 colors
- Support for palette shifting (for incomplete palettes not starting with 0)
Fixed
- Fixed a couple of bitplanes formats
- Image window now minimizes when the main window does
- Eliminated Scroll Mode since it was no longer necessary

v1.1
New
- Several new bitplane formats added / corrected
- Added scrolling mode and commands
Fixed
- Most actions automatically refresh or update
- Reorganized fields

v1.0
- Initial release